home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Magazine 1995 March / CD ROM Magazine Disc 6 (Dennis) (March 1995).iso / pc / workshop / elastic / install / disk1 / ereality.mst < prev    next >
Text File  |  1994-12-01  |  24KB  |  664 lines

  1. '**************************************************************************
  2. '*                       Elastic Reality Demo Setup
  3. '**************************************************************************
  4.  
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7. '$INCLUDE 'msregdb.inc'
  8.  
  9. CONST WELCOME       = 100
  10. CONST ASKQUIT       = 200
  11. CONST DESTPATH      = 300
  12. CONST EXITFAILURE   = 400
  13. CONST EXITQUIT      = 600
  14. CONST EXITSUCCESS   = 700
  15. CONST EXITSUCCESSR  = 701
  16. CONST OPTIONS       = 800
  17. CONST APPHELP       = 900
  18.  
  19. CONST CUSTINST      = 6200
  20. CONST TOOBIG        = 6300
  21. CONST BADPATH       = 6400
  22. CONST GETNAMEORG    = 7500
  23.  
  24. CONST LOGO = 1
  25.  
  26. CONST ERFILES    = 1
  27. CONST TJFILES    = 2
  28. CONST TUTFILES   = 3
  29. CONST VFWFILES   = 4
  30. CONST WIN32FILES = 5
  31. CONST REQFILES   = 6
  32.  
  33. CONST WS_VISIBLE      =&H10000000
  34. CONST WS_BORDER       =&H00800000
  35. CONST WS_CLIPCHILDREN =&H02000000
  36. CONST GWL_STYLE =-16
  37. CONST SW_SHOWMAXIMIZED =3
  38. CONST SW_SHOWMINIMIZED =2
  39.  
  40. DECLARE SUB ShowWindow LIB "user.exe" (hWnd%, iShow%)
  41. DECLARE SUB SetWindowLong LIB "user.exe" (hWnd%, offset%, style&)
  42.  
  43. GLOBAL DESTSYS$
  44. GLOBAL DESTWIN$
  45. GLOBAL DEST$
  46. GLOBAL DEST32S$
  47. GLOBAL DESTFREE$
  48.  
  49. GLOBAL WINDRIVE$
  50.  
  51. GLOBAL ERNEEDS$
  52. GLOBAL TJNEEDS$
  53. GLOBAL TUTNEEDS$
  54. GLOBAL WIN32NEEDS$
  55. GLOBAL VFWNEEDS$
  56. GLOBAL REQNEEDS$
  57. GLOBAL ALLNEEDS$
  58. GLOBAL EXTRACOSTS$
  59.  
  60. GLOBAL WINDRIVECOST$
  61.  
  62. GLOBAL CHECKSTATES$
  63. GLOBAL STATUSTEXT$
  64. GLOBAL DRIVETEXT$
  65.  
  66. GLOBAL hWnd%
  67. GLOBAL AlwaysCopy%
  68.  
  69. DECLARE SUB AddOptFilesToCopyList (ftype%)
  70. DECLARE SUB RecalcOptFiles (ftype%)
  71. DECLARE SUB RecalcPath
  72. DECLARE SUB SetDriveStatus
  73.  
  74. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  75.  
  76. DECLARE FUNCTION VflatdPresent LIB "INIUPD.DLL" AS INTEGER
  77.  
  78. DECLARE SUB UpdateSystemIni
  79. DECLARE SUB RebootSystem
  80. DECLARE SUB MakeSystemIni LIB "WIN32INI.DLL" (arg1$, arg2$)
  81. DECLARE FUNCTION PagingEnabled LIB "WIN32INI.DLL" AS INTEGER
  82. DECLARE FUNCTION ShareEnabled LIB "WIN32INI.DLL" AS INTEGER
  83. DECLARE FUNCTION IsWin32sLoaded LIB "WIN32INI.DLL" (arg1$) AS INTEGER
  84. DECLARE FUNCTION OnWindowsNT LIB "WIN32INI.dll" AS INTEGER
  85. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (arg1$, arg2$) AS INTEGER
  86.  
  87. INIT:
  88.     CUIDLL$ = "mscuistf.dll"
  89.     HELPPROC$ = "FHelpDlgProc"
  90.  
  91.     SetTitle "Elastic Reality Demo Setup"
  92.  
  93.     hWnd% = HwndFrame()
  94.     SetWindowLong hWnd%, GWL_STYLE, WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN
  95.     ShowWindow hWnd%, SW_SHOWMAXIMIZED
  96.  
  97.     SetBitmap CUIDLL$, LOGO
  98.  
  99.     szOldVer$ ="1.00.000     "
  100.     AlwaysCopy% = 0
  101.  
  102.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  103.     IF szInf$ = "" THEN
  104.         szInf$ = GetSymbolValue("STF_CWDDIR") + "EREALITY.INF"
  105.     END IF
  106.     ReadInfFile szInf$
  107.  
  108.     DEST$ = "C:\EREALITY"
  109.     DESTSYS$ = GetWindowsSysDir()
  110.     DESTWIN$ = GetWindowsDir()
  111.     DEST32S$ = DESTSYS + "WIN32S\"
  112.     DESTFREE$ = MID$(DESTSYS$,1,3) + "WIN32APP\FREECELL\"
  113.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  114.  
  115.     DISABLEW32S$ = "DisableWin32s"
  116.     DISABLEVFW$ = "DisableVFW"
  117.  
  118.     CHECKSTATES$ = "CheckItemsState"
  119.     STATUSTEXT$  = "StatusItemsText"
  120.     DRIVETEXT$   = "DriveStatusText"
  121.     WIN32INSTALLED% = 0
  122.     WIN32DISABLED% = 0
  123.     VFWDISABLED% = 0
  124.     FOR i% = 1 TO 3 STEP 1
  125.     AddListItem CHECKSTATES$, "ON"
  126.     NEXT i%
  127.     IF OnWindowsNT() THEN
  128.     IF GetWindowsMode < 2 THEN
  129.         i% = DoMsgBox("This software is for Intel processors only", "Installation Problem", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  130.         END
  131.     END IF
  132.     i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "No Video for Windows", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  133.     WIN32INSTALLED% = 1
  134.     WIN32DISABLED% = 1
  135.     VFWDISABLED% = 1
  136.     ELSE
  137.     IF (GetWindowsMajorVersion < 3) OR ((GetWindowsMajorVersion = 3) AND (GetWindowsMinorVersion < 1)) THEN
  138.         i% = DoMsgBox("Microsoft Windows version 3.1 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  139.         END
  140.     END IF
  141.         IF (GetWindowsMajorVersion >= 4) OR (GetWindowsMode < 2) OR (PagingEnabled() = 0) THEN
  142.         WIN32DISABLED% = 1
  143.         IF GetWindowsMajorVersion >= 4 THEN
  144.         WIN32INSTALLED% = 1
  145.         END IF
  146.         IF GetWindowsMode < 2 THEN
  147.         i% = DoMsgBox("Windows must be run in 386 Enhanced mode.", "Win32s requires Enhanced Mode Windows", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  148.         END IF
  149.         IF PagingEnabled() = 0 THEN
  150.         i% = DoMsgBox("Use the Control Panel 386 Enhanced icon and configure Windows using the Virtual Memory option.", "Win32s requires Virtual Memory", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  151.         END IF
  152.     ELSE
  153.         szNewVer$ = GetVersionOfFile( GetSymbolValue("STF_SRCDIR") + "WIN32S16.DLL" )
  154.         sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup")
  155.         IF sz$ = "0" THEN
  156.         AlwaysCopy% = 1
  157.         ELSEIF sz$ = "1" THEN
  158.         i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists )
  159.         IF i% = 1 THEN
  160.             i% = IsWin32sLoaded( szOldVer$ )
  161.         ENDIF
  162.         IF (i% <> 0) AND ((szNewVer$ = szOldVer$) OR (szNewVer$ < szOldVer$)) THEN
  163.             WIN32DISABLED% = 1
  164.             WIN32INSTALLED% = 1
  165.         END IF
  166.         END IF
  167.     END IF
  168.     IF (GetWindowsMajorVersion < 3) OR ((GetWindowsMajorVersion = 3) AND (GetWindowsMinorVersion < 10)) THEN
  169.         i% = DoMsgBox("Video for Windows requires Microsoft Windows version 3.10 or greater.", "No Video for Windows", MB_ICONINFORMATION+MB_OK+MB_TASKMODAL)
  170.         VFWDISABLED% = 1
  171.     ENDIF
  172.     END IF
  173.     IF VFWDISABLED% THEN
  174.     AddListItem CHECKSTATES$, "OFF"
  175.     SetSymbolValue DISABLEVFW$, "1"
  176.     ELSE
  177.     AddListItem CHECKSTATES$, "ON"
  178.     END IF
  179.     IF WIN32DISABLED% THEN
  180.     AddListItem CHECKSTATES$, "OFF"
  181.     SetSymbolValue DISABLEW32S$, "1"
  182.     ELSE
  183.     AddListItem CHECKSTATES$, "ON"
  184.     END IF
  185.     AddListItem CHECKSTATES$, "ON"
  186.     FOR i% = 1 TO 6 STEP 1
  187.         AddListItem STATUSTEXT$, ""
  188.     NEXT i%
  189.     FOR i% = 1 TO 7 STEP 1
  190.         AddListItem DRIVETEXT$, ""
  191.     NEXT i%
  192.     ReplaceListItem DRIVETEXT$, 7, DEST$
  193.  
  194.     ERNEEDS$    = "ERNeeds"
  195.     TJNEEDS$    = "TJNeeds"
  196.     TUTNEEDS$   = "TUTNeeds"
  197.     VFWNEEDS$   = "VFWNeeds"
  198.     WIN32NEEDS$ = "Win32Needs"
  199.     REQNEEDS$   = "ReqNeeds"
  200.     ALLNEEDS$   = "AllNeeds"
  201.     EXTRACOSTS$ = "ExtraCosts"
  202.     IF OnWindowsNT() = 0 THEN
  203.     cost& = 7168
  204.     cost& = cost& + GetSizeOfFile (DESTWIN$ + "WIN.INI") + 512
  205.     ELSE
  206.         cost& = 0
  207.     END IF
  208.     WINDRIVECOST$ = STR$(cost&)
  209.     FOR i% = 1 TO 26 STEP 1
  210.         AddListItem EXTRACOSTS$, "0"
  211.     NEXT i%
  212.  
  213.     RecalcPath
  214.     SetDriveStatus
  215.  
  216. WELCOME:
  217.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  218.     IF sz$ = "REACTIVATE" THEN
  219.     GOTO WELCOME
  220.     ELSEIF sz$ = "CONTINUE" THEN
  221.         UIPop 1
  222.     ELSE
  223.         GOSUB ASKQUIT
  224.         GOTO WELCOME
  225.     END IF
  226.  
  227.  
  228. CUSTINST:
  229.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  230.  
  231.     IF sz$ = "CONTINUE" THEN
  232.     CursorSave% = ShowWaitCursor()
  233.     ClearCopyList
  234.     AddOptFilesToCopyList ERFILES
  235.     AddOptFilesToCopyList TJFILES
  236.     AddOptFilesToCopyList TUTFILES
  237.     AddOptFilesToCopyList VFWFILES
  238.     AddOptFilesToCopyList WIN32FILES
  239.     AddOptFilesToCopyList REQFILES
  240.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ALLNEEDS$, "")
  241.     RestoreCursor CursorSave%
  242.     IF StillNeed& > 0 THEN
  243.             GOTO TOOBIG
  244.         END IF
  245.     IF (GetListItem(CHECKSTATES$, ERFILES) <> "ON") AND (GetListItem(CHECKSTATES$, TJFILES) <> "ON") THEN
  246.         IF (GetListItem(CHECKSTATES$, VFWFILES) <> "ON") AND (GetListItem(CHECKSTATES$, WIN32FILES) <> "ON") AND (GetListItem(CHECKSTATES$, TUTFILES) <> "ON") THEN
  247.         GOTO CUSTINST
  248.         END IF
  249.     END IF
  250.         UIPop 1
  251.         GOTO INSTALL
  252.     ELSEIF sz$ = "PATH" THEN
  253.         GOTO GETPATH
  254.     ELSEIF sz$ = "CHK1" THEN
  255.         RecalcOptFiles ERFILES
  256.     IF GetListItem(CHECKSTATES$, TJFILES) <> "ON" THEN
  257.             RecalcOptFiles REQFILES
  258.     END IF
  259.         SetDriveStatus
  260.         GOTO CUSTINST
  261.     ELSEIF sz$ = "CHK2" THEN
  262.         RecalcOptFiles TJFILES
  263.     IF GetListItem(CHECKSTATES$, ERFILES) <> "ON" THEN
  264.             RecalcOptFiles REQFILES
  265.         END IF
  266.         SetDriveStatus
  267.         GOTO CUSTINST
  268.     ELSEIF sz$ = "CHK3" THEN
  269.         RecalcOptFiles TUTFILES
  270.         SetDriveStatus
  271.         GOTO CUSTINST
  272.     ELSEIF sz$ = "CHK4" THEN
  273.         RecalcOptFiles VFWFILES
  274.         SetDriveStatus
  275.         GOTO CUSTINST
  276.     ELSEIF sz$ = "CHK5" THEN
  277.     IF GetListItem(CHECKSTATES$, WIN32FILES) <> "ON" THEN
  278.         i% = DoMsgBox("Win32s MUST be installed for the Elastic Reality Demo to function.  Make sure you really want to disable its installation.", "Win32s is Required", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  279.         END IF
  280.     RecalcOptFiles WIN32FILES
  281.     SetDriveStatus
  282.     GOTO CUSTINST
  283.     ELSEIF sz$ = "REACTIVATE" THEN
  284.         RecalcPath
  285.         SetDriveStatus
  286.         GOTO CUSTINST
  287.     ELSE
  288.         GOSUB ASKQUIT
  289.         GOTO CUSTINST
  290.     END IF
  291.  
  292. INSTALL:
  293.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  294.     SetRestartDir DESTWIN$
  295.  
  296.     IF GetListItem(CHECKSTATES$, WIN32FILES) = "ON" THEN
  297.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  298.     ERR = 0
  299.     END IF
  300.  
  301.     IF GetListItem(CHECKSTATES$, ERFILES) = "ON" THEN
  302.     CreateDir MakePath(DEST$, "ER_PROJS"), cmoNone
  303.     END IF
  304.     IF GetListItem(CHECKSTATES$, TJFILES) = "ON" THEN
  305.     CreateDir MakePath(DEST$, "TJ_PROJS"), cmoNone
  306.     END IF
  307.  
  308.     CopyFilesInCopyList
  309.  
  310.     IF GetListItem(CHECKSTATES$, VFWFILES) = "ON" THEN
  311.     IF VflatdPresent() = 0 THEN
  312.         CreateSysIniKeyValue DESTWIN$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  313.     END IF
  314.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  315.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  316.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  317.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  318.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  319.     IF I% = 0  THEN
  320.         CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  321.     END IF
  322.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  323.     CreateIniKeyValue DESTWIN$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  324.     CreateIniKeyValue DESTWIN$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  325.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  326.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  327.     CreateIniKeyValue DESTWIN$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  328.     CreateIniKeyValue DESTWIN$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  329.     CreateIniKeyValue DESTWIN$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  330.     CreateIniKeyValue DESTWIN$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  331.     Run ("regedit.exe /s " + MakePath(DESTWIN$, "mplayer.reg"))
  332.     Run ("regedit.exe /s " + MakePath(DESTSYS$, "OLE2.reg"))
  333.     Run ("regedit.exe /s " + MakePath(DESTSYS$, "cleanup.reg"))
  334.     CreateProgmanItem "Accessories", "Media Player", MakePath(DESTWIN$, "mplayer.exe"), "", cmoOverwrite
  335.     Run ("profdisp.exe")
  336.     END IF
  337.     IF GetListItem(CHECKSTATES$, WIN32FILES) = "ON" THEN
  338.     UpdateSystemIni
  339.     '' Terminate if unhandled fatal error
  340.     IF ERR <> 0 THEN
  341.         GOTO QUIT
  342.     END IF
  343.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "1", cmoOverwrite
  344.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Version", szNewVer$, cmoOverwrite
  345.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Nls", "AnsiCP", "1252", cmoOverwrite
  346.     IF DoesFileExist( DESTSYS$ + "WIN32S.INI", femExists ) THEN
  347.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Freecell", "Setup", "1", cmoOverwrite
  348.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Freecell", "Version", szNewVer$, cmoOverwrite
  349.     END IF
  350.     CreateProgmanGroup "Win32 Applications", "", cmoNone
  351.     ShowProgmanGroup   "Win32 Applications", 1, cmoNone
  352.     CreateProgmanItem  "Win32 Applications", "Freecell", DESTFREE$ + "FREECELL.EXE", "", cmoOverwrite
  353.     IF ShareEnabled() = 0 THEN
  354.         i% = DoMsgBox( "File-sharing must be enabled for Win32s. Run SHARE.EXE before starting Windows or add SHARE.EXE to your AUTOEXEC.BAT file.", "SHARE.EXE is not loaded", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  355.     END IF
  356.     END IF
  357.     IF (GetListItem(CHECKSTATES$, ERFILES) = "ON") OR (GetListItem(CHECKSTATES$, TJFILES) = "ON") THEN
  358.     IF GetListItem(CHECKSTATES$, ERFILES) = "ON" THEN
  359.         CreateRegKeyValue "erealitydemo", "Elastic Reality Demo"
  360.         CreateRegKeyValue "erealitydemo\shell\open\command", "er.exe %1"
  361.         CreateRegKeyValue ".er", "erealitydemo"
  362.     END IF
  363.     IF GetListItem(CHECKSTATES$, TJFILES) = "ON" THEN
  364.         CreateRegKeyValue "transjammerdemo", "TransJammer Demo"
  365.         CreateRegKeyValue "transjammerdemo\shell\open\command", "trnsjmmr.exe %1"
  366.     END IF
  367.  
  368.     ShowWindow hWnd%, SW_SHOWMINIMIZED
  369.  
  370.     CreateProgmanGroup "Elastic Reality", "", cmoNone
  371.     ShowProgmanGroup  "Elastic Reality", 1, cmoNone
  372.     IF GetListItem(CHECKSTATES$, ERFILES) = "ON" THEN
  373.         CreateProgmanItem "Elastic Reality", "Elastic Reality Demo", MakePath(DEST$, "PROGRAMS\ER.EXE"), ",,,," + MakePath(DEST$, "ER_PROJS"), cmoOverwrite
  374.     END IF
  375.     IF GetListItem(CHECKSTATES$, TJFILES) = "ON" THEN
  376.         CreateProgmanItem "Elastic Reality", "TransJammer Demo", MakePath(DEST$, "PROGRAMS\TRNSJMMR.EXE"), ",,,," + MakePath(DEST$, "TJ_PROJS"), cmoOverwrite
  377.     END IF
  378.     CreateProgmanItem "Elastic Reality", "Elastic Reality Demo ReadMe", "NOTEPAD.EXE " + MakePath(DEST$, "PROGRAMS\README.TXT"), "", cmoOverwrite
  379.     CreateProgmanItem "Elastic Reality", "Elastic Reality Demo Tutorials", "NOTEPAD.EXE " + MakePath(DEST$, "PROGRAMS\GETSTART.TXT"), "", cmoOverwrite
  380.  
  381.     ShowWindow hWnd%, SW_SHOWMAXIMIZED
  382.  
  383.     IF (OnWindowsNT() = 0) AND (IsDirWritable(DESTWIN$) <> 0) THEN
  384.         CopyFile DESTWIN$ + "WIN.INI", DESTWIN$ + "WININI.ERI", cmoOverwrite, 0
  385.         IF GetListItem(CHECKSTATES$, ERFILES) = "ON" THEN
  386.         CreateIniKeyValue "win.ini", "programs", "er.exe", MakePath(DEST$, "PROGRAMS\ER.EXE"), cmoOverwrite
  387.         END IF
  388.         IF GetListItem(CHECKSTATES$, TJFILES) = "ON" THEN
  389.         CreateIniKeyValue "win.ini", "programs", "trnsjmmr.exe", MakePath(DEST$, "PROGRAMS\TRNSJMMR.EXE"), cmoOverwrite
  390.         END IF
  391.     END IF
  392.     END IF
  393.  
  394. QUIT:
  395.     ON ERROR GOTO ERRQUIT
  396.  
  397.     IF ERR = 0 THEN
  398.     IF (GetListItem(CHECKSTATES$, WIN32FILES) = "ON") OR (GetListItem(CHECKSTATES$, VFWFILES) = "ON") THEN
  399.             dlg% = EXITSUCCESSR
  400.         ELSE
  401.             dlg% = EXITSUCCESS
  402.         END IF
  403.     ELSEIF ERR = STFQUIT THEN
  404.         dlg% = EXITQUIT
  405.     ELSE
  406.         dlg% = EXITFAILURE
  407.     END IF
  408. QUITL1:
  409.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  410.     IF sz$ = "REACTIVATE" THEN
  411.         GOTO QUITL1
  412.     END IF
  413.     UIPop 1
  414.  
  415.     IF dlg% = EXITSUCCESSR THEN
  416.     RebootSystem
  417.     IF GetListItem(CHECKSTATES$, WIN32FILES) = "ON" THEN
  418.         CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  419.         i% = DoMsgBox("Win32s is not properly configured and Win32s Setup must be run again.", "Unable to Restart Windows", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  420.     END IF
  421.     END IF
  422.  
  423.     END
  424.  
  425. ERRQUIT:
  426.     i% = DoMsgBox("Setup sources were corrupted, call Elastic Reality tech. support (608) 273-6585", "Setup Message", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  427.     END
  428.  
  429. GETPATH:
  430.     SetSymbolValue "EditTextIn", DEST$
  431.     SetSymbolValue "EditFocus", "ALL"
  432. GETPATHL1:
  433.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  434.  
  435.     IF sz$ = "CONTINUE" THEN
  436.         olddest$ = DEST$
  437.         DEST$ = GetSymbolValue("EditTextOut")
  438.  
  439.         IF IsDirWritable(DEST$) = 0 THEN
  440.         DEST$ = olddest$
  441.             GOSUB BADPATH
  442.             GOTO GETPATHL1
  443.         END IF
  444.         UIPop 1
  445.  
  446.         IF LEN(DEST$) > 23 THEN
  447.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  448.         ELSE
  449.             ReplaceListItem DRIVETEXT$, 7, DEST$
  450.         END IF
  451.  
  452.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  453.             RecalcPath
  454.             SetDriveStatus
  455.         END IF
  456.  
  457.         olddest$ = ""
  458.         GOTO CUSTINST
  459.     ELSEIF sz$ = "REACTIVATE" THEN
  460.         RecalcPath
  461.         SetDriveStatus
  462.         GOTO GETPATHL1
  463.     ELSEIF sz$ = "EXIT" THEN
  464.         GOSUB ASKQUIT
  465.         GOTO GETPATHL1
  466.     ELSE
  467.         UIPop 1
  468.         GOTO CUSTINST
  469.     END IF
  470.  
  471. TOOBIG:
  472.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", APPHELP, HELPPROC$)
  473.     IF sz$ = "REACTIVATE" THEN
  474.         RecalcPath
  475.         SetDriveStatus
  476.         GOTO TOOBIG
  477.     ELSEIF sz$ = "CONTINUE" THEN
  478.     UIPop 2
  479.     GOTO INSTALL
  480.     ELSE
  481.     UIPop 1
  482.     GOTO CUSTINST
  483.     END IF
  484.  
  485. BADPATH:
  486.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  487.     IF sz$ = "REACTIVATE" THEN
  488.         RecalcPath
  489.         SetDriveStatus
  490.         GOTO BADPATH
  491.     END IF
  492.     UIPop 1
  493.     RETURN
  494.  
  495. ASKQUIT:
  496.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FInfoDlgProc", 0, "")
  497.  
  498.     IF sz$ = "EXIT" THEN
  499.         UIPopAll
  500.         ERROR STFQUIT
  501.     ELSEIF sz$ = "REACTIVATE" THEN
  502.         GOTO ASKQUIT
  503.     ELSE
  504.         UIPop 1
  505.     END IF
  506.     RETURN
  507.  
  508. SUB AddOptFilesToCopyList (ftype%) STATIC
  509.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  510.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  511.         IF ftype% = ERFILES THEN
  512.         AddSectionFilesToCopyList "ERPROGRAMS", SrcDir$, MakePath(DEST$, "PROGRAMS")
  513.         ELSEIF ftype% = TJFILES THEN
  514.         AddSectionFilesToCopyList "TJPROGRAMS", SrcDir$, MakePath(DEST$, "PROGRAMS")
  515.             AddSectionFilesToCopyList "TJPROJECTS", SrcDir$, MakePath(DEST$, "TJ_PROJS")
  516.             AddSectionFilesToCopyList "TJIMAGES", SrcDir$, MakePath(DEST$, "IMAGES")
  517.             AddSectionFilesToCopyList "TJSTAMPS", SrcDir$, MakePath(DEST$, "IMAGES\STAMPS")
  518.         ELSEIF ftype% = TUTFILES THEN
  519.             AddSectionFilesToCopyList "ERPROJECTS", SrcDir$, MakePath(DEST$, "ER_PROJS")
  520.             AddSectionFilesToCopyList "ERIMAGES", SrcDir$, MakePath(DEST$, "IMAGES")
  521.             AddSectionFilesToCopyList "ERSTAMPS", SrcDir$, MakePath(DEST$, "IMAGES\STAMPS")
  522.             AddSectionFilesToCopyList "SHAPES", SrcDir$, MakePath(DEST$, "SHAPES")
  523.         ELSEIF ftype% = VFWFILES THEN
  524.         AddSectionFilesToCopyList "VFWWinfiles", SrcDir$, DESTWIN$
  525.         AddSectionFilesToCopyList "VFWSysfiles", SrcDir$, DESTSYS$
  526.         ELSEIF ftype% = WIN32FILES THEN
  527.         IF AlwaysCopy% = 1 THEN
  528.         AddSectionFilesToCopyList "_WindowsSystem", SrcDir$, DESTSYS$
  529.         AddSectionFilesToCopyList "_WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  530.         ELSE
  531.         AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$
  532.         AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  533.         END IF
  534.         AddSectionFilesToCopyList "Win32appFreecell", SrcDir$, DESTFREE$
  535.         AddSectionFilesToCopyList "Win32sSystemObsoleteFiles", SrcDir$, DESTSYS$ + "WIN32S\"
  536.         ELSEIF ftype% = REQFILES THEN
  537.         IF (GetListItem(CHECKSTATES$, ERFILES) = "ON") OR (GetListItem(CHECKSTATES$, TJFILES) = "ON") THEN
  538.         AddSectionFilesToCopyList "PROGRAMS", SrcDir$, MakePath(DEST$, "PROGRAMS")
  539.         AddSectionFilesToCopyList "HIIP", SrcDir$, MakePath(DEST$, "HIIP")
  540.         AddSectionFilesToCopyList "LOADERS", SrcDir$, MakePath(DEST$, "HIIP\LOADERS")
  541.         AddSectionFilesToCopyList "SAVERS", SrcDir$, MakePath(DEST$, "HIIP\SAVERS")
  542.         IF OnWindowsNT() THEN
  543.             AddSectionFilesToCopyList "NTSYSFILES", SrcDir$, DESTWIN$ + "SYSTEM32"
  544.         ELSE
  545.             AddSectionFilesToCopyList "SYSFILES", SrcDir$, DESTSYS$
  546.         END IF
  547.         END IF
  548.         END IF
  549.         SrcDir$ = ""
  550.     END IF
  551. END SUB
  552.  
  553. SUB RecalcOptFiles (ftype%) STATIC
  554.     CursorSave% = ShowWaitCursor()
  555.     ClearCopyList
  556.     AddOptFilesToCopyList ftype%
  557.  
  558.     fExtra% = 0
  559.     IF ftype% = ERFILES THEN
  560.         ListSym$ = ERNEEDS$
  561.     ELSEIF ftype% = TJFILES THEN
  562.         ListSym$ = TJNEEDS$
  563.     ELSEIF ftype% = TUTFILES THEN
  564.         ListSym$ = TUTNEEDS$
  565.     ELSEIF ftype% = VFWFILES THEN
  566.         ListSym$ = VFWNEEDS$
  567.     ELSEIF ftype% = WIN32FILES THEN
  568.         ListSym$ = WIN32NEEDS$
  569.     ELSEIF ftype% = REQFILES THEN
  570.         ListSym$ = REQNEEDS$
  571.         IF (GetListItem(CHECKSTATES$, ERFILES) = "ON") OR (GetListItem(CHECKSTATES$, TJFILES) = "ON") THEN
  572.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  573.             ReplaceListItem EXTRACOSTS$, ndrive%, WINDRIVECOST$
  574.             fExtra% = 1
  575.         END IF
  576.     END IF
  577.  
  578.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  579.  
  580.     cost& = 0
  581.     FOR i% = 1 TO 26 STEP 1
  582.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  583.     NEXT i%
  584.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  585.  
  586.     IF fExtra% THEN
  587.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  588.     END IF
  589.     RestoreCursor CursorSave%
  590.     ListSym$ = ""
  591. END SUB
  592.  
  593. SUB RecalcPath STATIC
  594.     CursorSave% = ShowWaitCursor()
  595.  
  596.     RecalcOptFiles ERFILES
  597.     RecalcOptFiles TJFILES
  598.     RecalcOptFiles TUTFILES
  599.     RecalcOptFiles VFWFILES
  600.     RecalcOptFiles WIN32FILES
  601.     RecalcOptFiles REQFILES
  602.  
  603.     RestoreCursor CursorSave%
  604. END SUB
  605.  
  606. SUB SetDriveStatus STATIC
  607.     drive$ = MID$(DEST$, 1, 1)
  608.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  609.     cost& = VAL(GetListItem(ERNEEDS$, ndrive%)) + VAL(GetListItem(TJNEEDS$, ndrive%)) + VAL(GetListItem(TUTNEEDS$, ndrive%)) + VAL(GetListItem(WIN32NEEDS$, ndrive%)) + VAL(GetListItem(VFWNEEDS$, ndrive%)) + VAL(GetListItem(REQNEEDS$, ndrive%))
  610.     free& = GetFreeSpaceForDrive(drive$)
  611.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  612.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  613.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  614.  
  615.     IF drive$ = WINDRIVE$ THEN
  616.         ReplaceListItem DRIVETEXT$, 4, ""
  617.         ReplaceListItem DRIVETEXT$, 5, ""
  618.         ReplaceListItem DRIVETEXT$, 6, ""
  619.     ELSE
  620.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  621.         cost& = VAL(GetListItem(ERNEEDS$, ndrive%)) + VAL(GetListItem(TJNEEDS$, ndrive%)) + VAL(GetListItem(TUTNEEDS$, ndrive%)) + VAL(GetListItem(WIN32NEEDS$, ndrive%)) + VAL(GetListItem(VFWNEEDS$, ndrive%)) + VAL(GetListItem(REQNEEDS$, ndrive%))
  622.         IF cost& = 0 THEN
  623.             ReplaceListItem DRIVETEXT$, 4, ""
  624.             ReplaceListItem DRIVETEXT$, 5, ""
  625.             ReplaceListItem DRIVETEXT$, 6, ""
  626.         ELSE
  627.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  628.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  629.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  630.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  631.         END IF
  632.     END IF
  633. END SUB
  634.  
  635. SUB UpdateSystemIni STATIC
  636.     VxDPath$ = DEST32S$ + "W32S.386"
  637.     SystemIniPath$ = GetWindowsDir()
  638.     MakeSystemIni SystemIniPath$, VxdPath$
  639. END SUB
  640.  
  641. SUB RebootSystem STATIC
  642.     i% = RestartListEmpty()
  643.     IF i% = 0 THEN
  644.        i% = ExitExecRestart()
  645.        RemoveFile GetWindowsDir() + "_MSRSTRT.EXE", cmoForce
  646.        RemoveFile GetWindowsDir() + "_MSSETUP.BAT", cmoForce
  647.      ELSE
  648.        i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
  649.      ENDIF
  650. END SUB
  651.  
  652. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  653.     IF szDir$ = "" THEN
  654.         MakePath = szFile$
  655.     ELSEIF szFile$ = "" THEN
  656.         MakePath = szDir$
  657.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  658.         MakePath = szDir$ + szFile$
  659.     ELSE
  660.         MakePath = szDir$ + "\" + szFile$
  661.     END IF
  662. END FUNCTION
  663.  
  664.